package cn.thornbird.orgsync.model.netease;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class AccountList extends Response {

    @JsonProperty("data")
    private UnitAccount data;


    @Data
    public static class UnitAccount {

        @JsonProperty("count")
        private Integer count;

        @JsonProperty("list")
        private List<Account> list;

        @JsonProperty("pageNum")
        private Integer pageNum;

        @JsonProperty("pageSize")
        private Integer pageSize;

    }


    @Data
    public static class Account {

        /**
         * 邮箱账号名
         */
        @JsonProperty("accountName")
        private String accountName;

        /**
         * 账号openid
         */
        @JsonProperty("accountOpenId")
        private String accountOpenId;

        /**
         * 别名列表
         */
        @JsonProperty("aliasList")
        private List<String> aliasList;

        /**
         * 是否有超大附件的权限: 0-没有, 1-有
         */
        @JsonProperty("bigattachRight")
        private Integer bigattachRight;

        /**
         * 是否已激活超大附件: 0-没有, 1-有
         */
        @JsonProperty("bigattachStatus")
        private Integer bigattachStatus;

        /**
         * 生日
         */
        @JsonProperty("birthday")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        private Date birthday;

        /**
         * 账号创建时间
         */
        @JsonProperty("createTime")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date createTime;

        /**
         * 是否开启邮箱大师私有 协议: 0-没有开启, 1-开启
         */
        @JsonProperty("dashi")
        private Integer dashi;

        /**
         * 域名
         */
        @JsonProperty("domain")
        private String domain;

        /**
         * 域名openid
         */
        @JsonProperty("domainOpenId")
        private String domainOpenId;

        /**
         * 入职日期
         */
        @JsonProperty("empTime")
        @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
        private Date empTime;

        /**
         * 是否有查看企业通讯录权限: 0-没有, 1-有
         */
        @JsonProperty("enableAccessAddr")
        private Integer enableAccessAddr;

        /**
         * 是否开启客户端授权码: 0-关闭, 1-开启
         */
        @JsonProperty("enableAuth")
        private Integer enableAuth;

        /**
         * 是否允许自助重置密码: 0-禁止, 1-允许
         */
        @JsonProperty("enableCommonResetPass")
        private Integer enableCommonResetPass;

        /**
         * 是否允许通过手机验证码重置密码: 0-禁止, 1-允许
         */
        @JsonProperty("enableMobileResetPass")
        private Integer enableMobileResetPass;

        /**
         * 是否有闪电邮登录权限: 0-没有, 1-有
         */
        @JsonProperty("flashmail")
        private Integer flashmail;

        /**
         * 传真
         */
        @JsonProperty("fax")
        private String fax;

        /**
         * 性别: 0-男, 1-女, 2-保密
         */
        @JsonProperty("gender")
        private Integer gender;

        /**
         * 是否有imap登录权限: 0-没有, 1-有
         */
        @JsonProperty("imap")
        private Integer imap;

        /**
         * 职位
         */
        @JsonProperty("job")
        private String job;

        /**
         * 工号
         */
        @JsonProperty("jobNumber")
        private String jobNumber;

        /**
         * 账号关联的邮箱列表
         */
        @JsonProperty("mailAccountList")
        private List<MailAccount> mailAccountList;

        /**
         * 手机
         */
        @JsonProperty("mobile")
        private String mobile;

        /**
         * 姓名
         */
        @JsonProperty("name")
        private String name;

        /**
         * 企业openid
         */
        @JsonProperty("orgOpenId")
        private String orgOpenId;

        /**
         * 账号首次登录是否需要修改密码: 0-不需要, 1-web登录需要,客户端不需要, 2-web登录需要且未改密码前客户端不能登录
         */
        @JsonProperty("passChangeFirstLogin")
        private Integer passChangeFirstLogin;

        /**
         * 上一次修改密码时间
         */
        @JsonProperty("passLastModifyTime")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date passLastModifyTime;

        /**
         * 备注
         */
        @JsonProperty("remark")
        private String remark;

        /**
         * 是否强制开启二次验证: 0-不强制, 1-强制, -1-不更改
         */
        @JsonProperty("secondaryLogon")
        private Integer secondaryLogon;

        /**
         * 是否有pop登录权限: 0-没有, 1-有
         */
        @JsonProperty("pop")
        private Integer pop;

        /**
         * 是否有smtp登录权限: 0-没有, 1-有
         */
        @JsonProperty("smtp")
        private Integer smtp;

        /**
         * 状态: 0-正常, 1-禁用, 2-已删除, 4-离职, 5-交接中, 6-交接完成
         */
        @JsonProperty("status")
        private Integer status;

        /**
         * 电话
         */
        @JsonProperty("tel")
        private String tel;

        /**
         * 账号类型: -1-超级管理员, 0-邮件列表, 1-别名, 2-普通账号
         */
        @JsonProperty("type")
        private Integer type;

        /**
         * 所属部门id列表
         */
        @JsonProperty("unitList")
        private List<String> unitList;

        /**
         * 用于显示的部门id
         * 调用/api/open/account/moveUnit时, 默认部门传"default", 多个部门用英文半角逗号分隔
         */
        @JsonProperty("unitId")
        private String unitId;

        /**
         * 部门名称
         */
        @JsonProperty("unitName")
        private String unitName;

        /**
         * 是否在通讯录可见: 0-不可见, 1-可见
         */
        @JsonProperty("visibleInAddr")
        private Integer visibleInAddr;

        /**
         * 是否有网页端登录权限: 0-没有, 1-有
         */
        @JsonProperty("web")
        private Integer web;

        /**
         * 是否有马上办登录权限: 0-否, 1-是
         */
        @JsonProperty("yixin")
        private Integer yixin;

        /**
         * 是否有exchange登录权限: 0-没有 1-有
         */
        @JsonProperty("activesync")
        private Integer activeSync;

        /**
         * 用于账户安全的绑定手机号
         */
        @JsonProperty("bindMobile")
        private String bindMobile;

        /**
         * 是否有自动转发权限: 0-否, 1-是
         */
        @JsonProperty("enableFwd")
        private Integer enableFwd;

        /**
         * 自动转发是否需要手机验证: 0-否, 1-是
         */
        @JsonProperty("fwdMAuth")
        private Integer fwdMAuth;

        /**
         * 最近一次webmail登录时间
         */
        @JsonProperty("lastWebLoginTime")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date lastWebLoginTime;

        /**
         * 最近一次客户端登录时间
         */
        @JsonProperty("lastClientLoginTime")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date lastClientLoginTime;

        /**
         * 是否设置为萨班斯归档邮箱: 0-没有, 1-有
         */
        @JsonProperty("mailArchive")
        private Integer mailArchive;

        /**
         * 是否设置为公正邮邮箱: 0-没有, 1-有
         */
        @JsonProperty("mailNotary")
        private Integer mailNotary;

        /**
         * 手机区号
         */
        @JsonProperty("mobilePrefix")
        private String mobilePrefix;

        /**
         * 是否有灵犀办公客户端登录权限: 0-没有, 1-有
         */
        @JsonProperty("sirius")
        private Integer sirius;

        /**
         * 邮箱别名列表有
         */
        @JsonProperty("aliasEmailList")
        private List<String> aliasEmailList;

        /**
         * 邮箱别名创建时间列表, 顺序与aliasEmailList一致
         */
        @JsonProperty("aliasEmailCreateTime")
        private List<String> aliasEmailCreateTime;

    }


    @Data
    public static class MailAccount {

        /**
         * 邮箱账号名
         */
        @JsonProperty("accountName")
        private String accountName;

        /**
         * 域名
         */
        @JsonProperty("domain")
        private String domain;

        /**
         * 用户账户有效期
         */
        @JsonProperty("expiredTime")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date expiredTime;

        /**
         * 收发信权限
         */
        @JsonProperty("rsRight")
        private Integer rsRight;

        /**
         * 是否有自动转发权限: 0-否, 1-是
         */
        @JsonProperty("enableFwd")
        private Integer enableFwd;

        /**
         * 自动转发是否需要手机验证: 0-否, 1-是
         */
        @JsonProperty("fwdMAuth")
        private Integer fwdMAuth;

        /**
         * 是否禁止客户端pop删信: 0-允许pop删信, 1-禁止pop删信, -1-不修改
         */
        @JsonProperty("popDelete")
        private Integer popDelete;

    }

}
